In the communications industry, distributed processing computing platforms are commonly employed in network routing nodes, such as signaling system 7 (SS7) signal transfer points (STPs), Internet protocol (IP) routers, SS7-IP gateways. These distributed processing platforms typically include multiple processing modules or cards. Each processing module may include one or more microprocessors for performing a predetermined processing function. Each processing module may also include one or more databases. In some implementations, groups of processing modules may include copies of a common database, such as a routing database, a local number portability database, a call screening database, a global title translation database, a signaling mediation database, or a mobile services database. In such implementations, processing modules within the group may function as a distributed processing system by sharing the processing load required to process signaling messages. For example, in distributed routing processing, each processing module may be associated with different signaling links and may be responsible for routing signaling messages received on any of its signaling links. By dividing routing processing based on signaling links, message throughput may be increased over implementations where a centralized processor performs routing database lookups for all signaling links.
In distributed database systems, database updates must be communicated to each processing module that maintains a copy of the distributed database. For example, when one processing module detects an event that affects the common database, that processing module preferably updates its copy of the database and communicates the event to other processing modules so that the other processing modules can update their copies of the database.
Two mechanisms by which processing modules can communicate events to other processing modules are unicast messages and multicast messages. Communicating events to other processing modules using unicast messages requires that the sending processor create separate unicast messages to be delivered to each recipient processor. Delivering event messages to multiple processing modules using unicast messages can increase the processing load on the sending processor, because the sending processor is required to formulate individual messages for each destination processor. The processing load on the sending processor can be great, especially when the system includes large numbers of processing modules affected by a database update.
In order to reduce the processing load on the sending processor, a multicast event message distribution mechanism can be used. In one conventional multicast event distribution mechanism, a sending processor formulates a multicast message and includes a multicast distribution list in the message. The sending processor sends the message to the first processor in the multicast distribution list. The first processor in the multicast distribution list processes the message and sends a copy to the second processor in the multicast distribution list. The process is repeated until all of the processors in the multicast distribution list have received the message. Because multicasting distributes the processing required to deliver event information to multiple processors, such a solution is more scalable than a pure unicast method. However, this conventional multicast method has only been used to distribute one event message per multicast message.
In order to further reduce bandwidth utilization on a bus or network that interconnects processing modules in a distributed processing system, it may be desirable to combine multiple multicast messages within a single multicast message. However, combining multiple multicast messages within a single multicast message requires buffering of multicast messages relating to different events, because events occur at different times. While the multicast messages are being buffered, an event affecting a single processing module and therefore requiring unicast delivery may occur. If multicast messages relating to prior events are being buffered, the unicast message may be distributed to its destination before the multicast messages. Delivering messages out of order can result in improper database updates and other errors.
Another problem with distributing event messages is that the processor cycles required to process the event messages may exceed the available processing capacity of a recipient processing module. This is especially true when the sending processing module is a high speed module and the receiving processing module is a legacy or low speed module. Sending database update messages requiring work by a processing module that exceeds the processing capacity of the module can result in a loss of synchronization between databases in a distributed processing system.
Accordingly, in light of these difficulties, there exists a need for methods, systems, and computer program products for multicast compression and pacing of database update messages transmitted between processing modules in a distributed processing system.